# 定义编译器和编译选项  
CXX = g++  
CXXFLAGS = -Wall -g  
STANDRD = -std=c++11 
LIB  = -lpthread
# 定义源文件列表  
SRCS_CC = $(wildcard *.cc)  
SRCS_CPP = $(wildcard *.cpp)  
  
# 定义目标文件列表  
OBJS_CC = $(SRCS_CC:.cc=.exe)  
OBJS_CPP = $(SRCS_CPP:.cpp=.o)  
  
TARGET = my.exe
# 合并所有目标文件  
OBJS = $(OBJS_CC) $(OBJS_CPP)  $(TARGET)
  
# 默认目标：编译所有源文件生成目标文件  
all: $(OBJS)  
  

# 编译.cpp源文件生成.o目标文件  
my.exe: $(OBJS_CPP)
	$(CXX) -o $@  $^  $(LIB)

# 编译.cc源文件生成.o目标文件  
%.exe: %.cc  
	$(CXX) $(CXXFLAGS) $(STANDRD)  $(LIB) -c $< -o $@  
  
%.o: %.cc
	$(CXX) $(CXXFLAGS) $(STANDRD) $(LIB) -c $< -o $@  

  
# 清除生成的目标文件  
clean:  
	rm -f $(OBJS)  *.exe


cpp: $(OBJS_CPP)  $(TARGET) 